#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
class find_test
{
public:
    find_test(int num) : test_(num) {}
    ~find_test() {}
    find_test(const find_test &other)
    {
        test_ = other.test_;
    }
    find_test &operator=(const find_test &other)
    {
        test_ = other.test_;
        return *this;
    }
    bool operator==(const find_test &other) const
    {
        return test_ == other.test_;
    }
    int get() const { return test_; }

private:
    int test_;
};
int main()
{
    std::vector<find_test> vec;
    find_test f1(1);
    find_test f2(2);
    vec.push_back(f1);
    vec.push_back(f2);
    // find的前两个变量是一段迭代器的范围，最后一个参数是个类型引用，所以如果该类型不是标准类型，而是我们自定义的类型的话，就需要我们重写==操作符
    if (vec.end() != find(vec.begin(), vec.end(), f2))
    {
        std::cout << "find f2, f2 value is " << f2.get() << std::endl;
    }
}

